[アップデート] Account Factory for Terraform (AFT) でVPCの利用有無とAWS Backup復旧ポイント/S3ログアーカイブバケットの保持期間がカスタマイズ可能に
アップデート内容
Account Factory for Terraform v1.12がリリースされました。
- AWS Control Tower’s Account Factory for Terraform increases customization
- Release 1.12.0 · aws-ia/terraform-aws-control_tower_account_factory
特に注目なのが以下です。
- VPC及び関連するネットワーキングリソースを使用せずにAFTをデプロイできるように
- AWS Backup復旧ポイント、S3ログアーカイブバケットの保持期間が設定可能に
- AFTで作成されるデフォルトセキュリティグループに、インバウンド/アウトバウンドルールがない状態で作成されるように(SecurityHub コントロール EC2.2に準拠)
何が嬉しい?
- コストを抑えた構成でAFTをデプロイできるようになった
- AFTで作成されるデフォルトセキュリティグループがSecurityHub コントロール EC2.2で検出されなくなった
コストを抑えた構成でAFTをデプロイできるようになった
AFT関連のLambdaやCodeBuildがVPC内で動作するため、NatGatewayやEIP等のVPC関連リソースが維持コストとして発生します。
これまでは、VPCの有無をAFTのModuleで制御できなかったため、維持コストを下げたい場合は以下のブログのように使っていない時間はNatGatewayやEIPを手動で削除する必要がありました。
今回のアップデートでVPC無しでデプロイできるようになったため、維持コストを下げる手間が大きく減りました。
CloudWatchロググループ、AWS Backup復旧ポイント、S3ログアーカイブバケットの保持期間も設定可能になりました。
今までは、AWS Backup復旧ポイントは永続、S3ログアーカイブバケットが365日となっていました。
AWS Backupの復旧ポイントは割と増えがちです。AFTは4つのDynamoDBテーブル利用して、それぞれに対して1時間に1回バックアップを実行します。
1ヶ月あたり、2880個(4(テーブル数) * 24(時) * 30(日))のAWS Backupの復旧ポイントが作成されます。
データ量自体は少ないため、AWS Backupの料金はそこまで大きくはなりません。
注意したいのが、AWS ConfigやSecurityHub(Backup.1)です。
例えば、AFTを2年程度運用していて、復旧ポイントが70,000個(2880(月) * 24(2年) = 69,120)あったとします。
SecurityHubコントロールBackup.1が有効になっていた場合、280USD/月のコストがかかります。
- SecurityHubセキュリティチェック: 70USD/月
- 0.0010USD/チェック * 70,000(復旧ポイントの数)
- 料金 - AWS Security Hub | AWS
- AWS Config: 210USD/月
AWS::config::ResourceCompliance
(Configルールの準拠非準拠が記録されるリソース)がセキュリティチェックの回数分記録される- 設定項目あたり(連続的な記録) 0.003USD * 70,000(復旧ポイントの数)
- 料金 - AWS Config | AWS
保存期間を設定することで、存在する復旧ポイントの数が減るため料金を抑えることができます。
SecurityHub コントロール EC2.2でデフォルトセキュリティグループが検出されなくなった
既存はデフォルトのセキュリティグループとして、インバウンドとアウトバウンドのルールが付いたものがデプロイされていました。
このセキュリティグループは、SecurityHub EC2.2)で検知されてしまいます。
EC2.2 VPC のデフォルトのセキュリティグループでは、インバウンドトラフィックまたはアウトバウンドトラフィックを許可しないようにする必要があります
今回のアップデートで、作成されるデフォルトのセキュリティグループはルールが付いていないものになったため、検知されなくなりました。
Terraformコードをみてみる
VPC及び関連するネットワーキングリソースを使用せずにAFTをデプロイできるように
AFT用のLambdaやCodeBuildがいくつか作成されます。このリソースはデフォルトでは、AFTで作成されるVPC内で動作します。
AFTモジュールにVPCの作成有無を制御する、aft_enable_vpc
というVariableが追加されました。
Name | Description | Type | Default | Required |
---|---|---|---|---|
aft_enable_vpc | Flag turning use of VPC on/off for AFT | bool |
true |
no |
デフォルトはtrue
でfalse
にすることで、VPC関連のリソースなしになります。
VPCについては、以下の箇所で定義されています。
modules/aft-account-request-framework/vpc.tf
LambdaやCodeBuildをみてみるとDynamic
を使って、該当の変数の状態によってVPC設定の有り無しを制御していました。
modules/aft-account-request-framework/lambda.tf
CloudWatchロググループ、AWS Backup復旧ポイント、S3ログアーカイブバケットの保持期間
それぞれ以下のVariablesが追加されました。
Name | Description | Type | Default | Required |
---|---|---|---|---|
backup_recovery_point_retention | Number of days to keep backup recovery points in AFT DynamoDB tables. Default = Never Expire | number |
null |
no |
log_archive_bucket_object_expiration_days | Amount of days to keep the objects stored in the AFT logging bucket | number |
365 |
no |
AWS BackupとS3ログアーカイブの設定はそれぞれ以下です。
- AWS Backup: modules/aft-account-request-framework/backup.tf
- S3ログアーカイブ: modules/aft-feature-options/s3.tf
AFTで作成されるデフォルトセキュリティグループに、インバウンド/アウトバウンドルールがない状態で作成されるように
aws provideraws_vpc
で以下のようにVPCを作ると、デフォルトセキュリティグループも作成されます。
resource "aws_vpc" "my_vpc" { cidr_block = "10.0.0.0/16" tags = { Name = "my-vpc" } }
これを回避するために、aft_vpc_default_sg
でデフォルトセキュリティグループを明示的に作成する必要があります。
そのため、VPC定義に"aft_vpc_default_sg"`の定義が追加されていました。
modules/aft-account-request-framework/vpc.tf
おわりに
「NatGatewayの維持コストが気になるんだよな、VPC無しでデプロイできないかな」といった方に、ぜひ確認してほしいアップデートです。
Security Hubのコントロール「Backup.1」は、2023/12に追加されました。
AFTのBackup設定によるSecurity HubとAWS Configの料金増えて気になっている方にも、役立ちそうです。
私自身「AFTの検証したいけど、1回作るのも大変だし、維持しているとコストもかかるから辛いな」と思っていましたが、今回のアップデートにより検証のハードルが下がりました。
AFT関連のブログも増やしていきたいと思います。
以上、AWS事業本部の佐藤(@chari7311)でした。